Relational databases build the backbone of many enterprise applications. Due to growing data volumes and data complexity, continued efforts have been made to improve response times of queries of relational databases. Data complexity can include managing dependencies between individual datasets, managing semi-structured data in relational databases, and increasing performance expectations of users of enterprise applications. One of the early introduced performance optimization strategies is based on indexes of tables on datasets of the database. Different types of indexes have been introduced. Typically, indexes are updated synchronously with a main or base table as part of a transaction that modifies the data in the main dataset. However, in special cases, e.g., in the case of a text search index, updates may require resource-intensive steps that would unduly prolong transaction times. Depending on the size of documents and the additional processing, some systems therefore use an asynchronously update mode for text indexes.
Asynchronous updates provide the advantages of modifying the data faster, response times are therefore shorter and the data is visible sooner for other applications. However, to refresh the text search index, the modified data must be logged. Until the logged data is applied to the text index, query results will reflect the state of the data from the last update time, and queries served from such an index may therefore return stale data.